<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        //1.Js 是单线程的,同一个时间只能做同一件事
        //但是,单线程意味着所有任务需要排队,前一个任务结束,后一个任务才会执行
        //所以会有可能产生堵塞问题:若JS执行时间过长,或造成页面渲染不连贯,导致页面渲染加载堵塞
        //为了解决这个问题,出现了 同步 和 异步
        //同步:前一个任务结束后再执行后一个任务,程序的执行顺序与任务的排列顺序是一致的,同步的.
        //异步:在做一键事情的时候,还可以做其他事情

        //同步任务:同步任务都在主线程上执行,形成一个执行栈
        //异步任务:通过回调函数实现的,添加到任务队列中(也叫做消息队列)
        //一般而言，异步任务有以下三种类型:1、普通事件，如click、resize等 2、资源加载，如load、error等 3、定时器，包括setInterval、setTimeout等
        
        //执行顺序:
        //1.先执行执行栈中的同步任务
        //2.异步任务（回调函数)放入任务队列中,不执行
        //3.一旦执行栈中的所有同步任务执行完毕，系统就会按次序读取任务队列中的异步任务，于是被读取的异步任务结束等待状态，进入执行栈最后面，开始执行。

        // location 对象 用于获取或者设置窗体的URL,也可以用于解析URL 这个属性返回一个对象

        //URL 统一资源定位符 互联网上每个文件都有一个唯一的URL
        
        //location.assign('网址')
        //记录浏览历史,所以可以实现后退功能

        //location.replace('网址')
        //不记录浏览历史,不能实现后退功能

        //location.reload()
        //重新加载页面,相当于刷新按钮或者 f5 如果填参数为 true 就是强制刷新 ctrl+f5 

        //navigator 对象
        //包含有关浏览器的信息,userAgent,该属性可以返回由客户机发送服务器的user-agent 头部的值

        //history 对象
        //与浏览器历史记录进行交互,该对象包含用户(在浏览器窗口中),访问过的URL
        //history.back()        后退功能
        //history.forward()     前进功能
        //history.go()          前进后退功能,参数填正n,表示前进n步,参数填-n表示后退n步

        //普通函数写法
        //先定义:function fn (){
            // console.log(123);
        // }
        //再用: fn();

        //立即执行函数:
        //写法1:(function(){})();
        //写法2:(function(){}());   注意要写分号结尾
        //写完后不必调用立即执行
        //第二个小括号可以看作是调用函数,用来传递参数

        //作用:创建了一个独立的作用域,不会有命名冲突的情况
    </script>
</body>
</html>